/*NH6Fo1UiFw/Mv/eq+HanMhJCX3j2Epk8tjUrzKczYbD3naLeJZ77aweXZqlT09YQ*/
/**
 * Created by liqiankun on 2018/6/23.
 */
import React, {Component} from 'react';
import {high, base, getMultiLang} from 'nc-lightapp-front';
import './index.less'
const {
  NCInput: Input,
  NCSelect:Select,
  NCTooltip:Tooltip,
    NCButton:Button
} = base;
class HeadCom extends Component{
  constructor(props){
    super(props);
    this.state = {
        json: {}
    }
  }

    componentWillMount() {
        let callback= (json) =>{
            this.setState({json:json},()=>{
                // initTemplate.call(this, this.props);
            })
        }
        getMultiLang({moduleId:'headcom',domainName:'gl',currentLocale:'simpchn',callback});
    }
    componentDidMount(){
        this.props.HeadComRef && this.props.HeadComRef(this)
    }
    getLabelCode = () => {
        let { json } = this.state;
        let labelCode = {
            [json['headcom-000001']]: 'queryobjname', /* 国际化处理： 对象*/
            [json['headcom-000002']]: 'queryobjname', /* 国际化处理： 表头查询对象*/
            [json['headcom-000003']]: 'queryobjname', /* 国际化处理： 查询对象*/
            [json['headcom-000004']]: 'queryobjname', /* 国际化处理： 统计项*/
            [json['headcom-000005']]: 'currtype', /* 国际化处理： 币种*/
            [json['headcom-000006']]: 'period', /* 国际化处理： 期间*/
            [json['headcom-000007']]: 'period', /* 国际化处理： 日期范围*/
            [json['headcom-000008']]: 'period', /* 国际化处理： 会计期间*/
            [json['headcom-000009']]: 'accbook', /* 国际化处理： 核算账簿*/
            [json['headcom-000010']]: 'unit', /* 国际化处理： 计量单位*/
            [json['headcom-000011']]: 'voucherno', /* 国际化处理： 凭证范围*/
            [json['headcom-000012']]: 'reportname', /* 国际化处理： 辅助分析表名称*/
            [json['headcom-000013']]: 'account', /* 国际化处理： 科目*/
            // [json['headcom-000014']]: 'subjectListSingleValue', /* 国际化处理： 科目列表*/
            [json['headcom-000015']]: 'queryobjname', /* 国际化处理： 辅助项*/
            [json['headcom-000016']]: 'loccurrtype', /* 国际化处理： 本币类型*/
        }
        return labelCode
    }
    generateHeadTitleTemp = (labelArr) => {
        let labelCode = this.getLabelCode();
        let headTitleTemp = {}
        labelArr.forEach(ele => {
            if(ele){
                if(labelCode.hasOwnProperty(ele)){
                    let attrcode = labelCode[ele];
                    headTitleTemp[attrcode] = {
                        title: ele,
                        value: ''
                    }
                }
            } else {
                headTitleTemp['otherinfo'] = {
                    title: '',
                    value: ''
                }
            }
            
        });
        return headTitleTemp;
    }
    /**
     * @description: 获取headtitle
     * @param {Arr} //labelArr: 页面渲染的label名称
     * @return {*} Object
     */    
    getHeadTitle = (labelArr) => {
        let { content, lastThre, subjectListSingleValue } = this.props;
        let renderContent = {};
        let headTitle = this.generateHeadTitleTemp(labelArr);
        if(content && content.pageinfo || lastThre && lastThre.queryobjname){
            renderContent.queryobjname = content && content.pageinfo || lastThre && lastThre.queryobjname
        }else{
            renderContent.queryobjname = ''
        }
        Object.keys(headTitle).forEach((attrcode)=>{
            if(attrcode == 'queryobjname'){
                headTitle[attrcode].value = renderContent[attrcode] || '';
            } else if(attrcode == 'account'){ //科目
                headTitle[attrcode].value = subjectListSingleValue || lastThre[attrcode] || ''; //lastThre[attrcode] subjname
            }else {
                headTitle[attrcode].value = lastThre[attrcode] || '';
            }
        })
        return headTitle
    }
    renderInput = (attrcode, item) => {
        let { subjectListSingleValue } = this.props;
        let value = attrcode == 'account' ? (subjectListSingleValue || (item && item[attrcode])) : (item && item[attrcode]);
        return(
            <Tooltip
                inverse
                placement='bottom'
                overlay={value}
            >

                <Input fieldid={attrcode} disabled value={value}/>
            </Tooltip>
        )
    }
    renderFormItemComp = (type, fn, handleSubjectList) =>{
        let {
            content, lastThre, accountType,
            disabled, assistList, threeallSubject,
            dataPage, subjectListSingleValue, typeDisabled
        } = this.props;
        let renderContent = {};
        if (content && content.pageinfo || lastThre && lastThre.queryobjname) {
            renderContent.queryobjname = content && content.pageinfo || lastThre && lastThre.queryobjname
        } else {
            renderContent.queryobjname = ''
        }

        switch (type) {
            case this.state.json['headcom-000000']: // /* 国际化处理： 账簿格式*/
                return <Select
                    showClear={false}
                    fieldid='accountType'
                    disabled={typeDisabled}
                    onChange={(value) => fn('accountType', value)}
                    value={accountType}
                >
                    <Select.NCOption value="quantityamountcolumn">{this.state.json['headcom-000017']}</Select.NCOption>{/* 国际化处理： 数量金额式*/}
                    <Select.NCOption value="amountcolumn">{this.state.json['headcom-000018']}</Select.NCOption>{/* 国际化处理： 金额式*/}
                </Select>;
            case this.state.json['headcom-000001']: // /* 国际化处理： 对象*/
            case this.state.json['headcom-000002']: // /* 国际化处理： 表头查询对象*/
            case this.state.json['headcom-000003']: // /* 国际化处理： 查询对象*/
            case this.state.json['headcom-000004']: // /* 国际化处理： 统计项*/
                return this.renderInput('queryobjname', renderContent);

            case this.state.json['headcom-000005']:/* 国际化处理： 币种*/
                return this.renderInput('currtype', lastThre);

            case this.state.json['headcom-000006']:/* 国际化处理： 期间*/
            case this.state.json['headcom-000007']:/* 国际化处理： 日期范围*/
            case this.state.json['headcom-000008']:/* 国际化处理： 会计期间*/
                return this.renderInput('period', lastThre);

            case this.state.json['headcom-000009']:/* 国际化处理： 核算账簿*/
                return this.renderInput('accbook', lastThre);

            case this.state.json['headcom-000010']:/* 国际化处理： 计量单位*/
                return this.renderInput('unit', lastThre);

            case this.state.json['headcom-000011']:/* 国际化处理： 凭证范围*/
                return this.renderInput('voucherno', lastThre);

            case this.state.json['headcom-000012']:/* 国际化处理： 辅助分析表名称*/
                return this.renderInput('reportname', lastThre);

            case this.state.json['headcom-000013']:/* 国际化处理： 科目*/
                return this.renderInput('account', lastThre);

            case '':
                return this.renderInput('otherinfo', lastThre);
            case this.state.json['headcom-000014']:/* 国际化处理： 科目列表*/
                return (
                    <Select
                        showClear={false}
                        fieldid='subjectList'
                        disabled={disabled}
                        onChange={(value) => handleSubjectList('subjectListSingleValue', value)}
                        value={subjectListSingleValue}
                    >
                        {
                            lastThre && lastThre.accounts.map((item, index) => {
                                return <Select.NCOption value={item} key={item} title={item}>{item}</Select.NCOption>

                            })
                        }
                    </Select>
                )
            case this.state.json['headcom-000015']:/* 国际化处理： 辅助项*/
                return this.renderInput('queryobjname', lastThre);
            case this.state.json['headcom-000016']:/* 国际化处理： 本币类型*/
                return this.renderInput('loccurrtype', lastThre);
        }
    }
    renderFormItem = (item) => {
        let {title, isLong} = item; 
        let { changeSelectStyle, handleSubjectList} = this.props;
        return (
            <div className={"cellContainer " + isLong} key={title}>
                <div className="labelName nc-theme-common-font-c">
                    <label>{title}</label>
                </div>
                <div>
                    {this.renderFormItemComp(title, changeSelectStyle, handleSubjectList)}
                </div>
            </div>
        )
    }
    render(){
        let { headLabel } = this.props
        return(
            <div className="searchContainer nc-theme-gray-area-bgc">
                {headLabel.map((item) => {
                    return this.renderFormItem(item)
                })}
            </div>
        )
    }

}

export default HeadCom

/*NH6Fo1UiFw/Mv/eq+HanMhJCX3j2Epk8tjUrzKczYbD3naLeJZ77aweXZqlT09YQ*/